package com.chuanyun.wechatcheckin.model;

import com.fasterxml.jackson.annotation.JsonProperty;

/**
 * 企业微信修改成员假期余额请求参数
 */
public class VacationQuotaRequest {

    /**
     * 需要修改假期余额的成员的userid
     */
    @JsonProperty("userid")
    private String userid;

    /**
     * 假期id
     */
    @JsonProperty("vacation_id")
    private Integer vacation_id;

    /**
     * 设置的假期余额，单位为秒
     * • 不能大于1000天或24000小时
     * • 当假期时间刻度为按小时请假时，必须为360整倍数，即0.1小时整倍数
     * • 按天请假时，必须为8640整倍数，即0.1天整倍数
     */
    @JsonProperty("leftduration")
    private Long leftduration;

    /**
     * 假期时间刻度：
     * • 0 - 按天请假
     * • 1 - 按小时请假
     * 主要用于校验，必须等于企业假期管理配置中设置的假期时间刻度类型
     */
    @JsonProperty("time_attr")
    private Integer time_attr;

    /**
     * 修改备注，用于显示在假期余额的修改记录当中，可对修改行为作说明，不超过200字符
     */
    @JsonProperty("remarks")
    private String remarks;

    // 构造函数
    public VacationQuotaRequest() {}

    public VacationQuotaRequest(String userid, Integer vacation_id, Long leftduration, Integer time_attr, String remarks) {
        this.userid = userid;
        this.vacation_id = vacation_id;
        this.leftduration = leftduration;
        this.time_attr = time_attr;
        this.remarks = remarks;
    }

    // Getter 和 Setter 方法
    public String getUserid() {
        return userid;
    }

    public void setUserid(String userid) {
        this.userid = userid;
    }

    public Integer getVacation_id() {
        return vacation_id;
    }

    public void setVacation_id(Integer vacation_id) {
        this.vacation_id = vacation_id;
    }

    public Long getLeftduration() {
        return leftduration;
    }

    public void setLeftduration(Long leftduration) {
        this.leftduration = leftduration;
    }

    public Integer getTime_attr() {
        return time_attr;
    }

    public void setTime_attr(Integer time_attr) {
        this.time_attr = time_attr;
    }

    public String getRemarks() {
        return remarks;
    }

    public void setRemarks(String remarks) {
        this.remarks = remarks;
    }

    /**
     * 获取假期时间刻度描述
     * 
     * @return 时间刻度描述
     */
    public String getTimeAttrDescription() {
        if (time_attr == null) {
            return "未设置";
        }
        return time_attr == 0 ? "按天请假" : "按小时请假";
    }

    /**
     * 获取假期余额的天数（仅当time_attr=0时有效）
     * 
     * @return 天数
     */
    public double getLeftDurationInDays() {
        if (leftduration == null || time_attr == null || time_attr != 0) {
            return 0.0;
        }
        return leftduration / 86400.0;
    }

    /**
     * 获取假期余额的小时数（仅当time_attr=1时有效）
     * 
     * @return 小时数
     */
    public double getLeftDurationInHours() {
        if (leftduration == null || time_attr == null || time_attr != 1) {
            return 0.0;
        }
        return leftduration / 3600.0;
    }

    @Override
    public String toString() {
        return "VacationQuotaRequest{" +
                "userid='" + userid + '\'' +
                ", vacation_id=" + vacation_id +
                ", leftduration=" + leftduration +
                ", time_attr=" + time_attr +
                ", remarks='" + remarks + '\'' +
                '}';
    }
}